<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Cic_model extends CI_Model 
{
	public function __construct()
	{
		parent::__construct();
	}
	/**
	 * 
	 * @param $table_name	表名
	 * @param $where		where条件，可以传字符串也可以传数组
	 * @param $order_by		传数组	array('create_time','desc') or array('create_time','desc','pid','asc')
	 * @param $limit		传一个整数
	 * @param $offset		传一个整数
	 * @return 				如果查询有数据返回资源，如果没有数组返回FALSE
	 */
	public function get_all($table_name,$where='',$order_by='',$limit='',$offset='')
	{
		if(! empty($where))
			$this->db->where($where);
		if(! empty($order_by))
		{
			$this->db->order_by($order_by[0],$order_by[1]);
			if(count($order_by) == 4){
				$this->db->order_by($order_by[2],$order_by[3]);
			}
		}
		if(! empty($limit) and  empty($offset))
		{
			$this->db->limit($limit);
		}else if(! empty($limit) and  ! empty($offset)){
			$this->db->limit($limit,$offset);
		}
		$query = $this->db->get($table_name);
		if($query->num_rows() > 0)
			return $query;
		else 
			return false;
	}
	/**
	 * 获取单条数据
	 * @param $table_name	表名
	 * @param $where		where条件
	 * 						直接返回数据
	 */
	public function get_one($table_name,$where=array())
	{
		$query = $this->db->get_where($table_name,$where,1);
		return $query->row();
	}
	/**
	 * 添加数据	
	 * @param $table_name	表名
	 * @param $data			插入的数据，传入数组		array('name'=>'jay')
	 * @return boolean		成功返回插入id号，失败返回假
	 */
	public function insert($table_name,$data)
	{
		$this->db->insert($table_name,$data);
		if($this->db->affected_rows() > 0)
			return $this->db->insert_id();
		else
			return FALSE;
	}
	/**
	 * 更新
	 * @param $table_name	表名
	 * @param $data			需要更新的字段和值		array('name'=>'jay')
	 * @param $where		where条件
	 *						 更新成功，返回真，否则返回假
	 */
	public function update($table_name,$data,$where=array())
	{
		$this->db->update($table_name,$data,$where);
		if($this->db->affected_rows() > 0)
			return TRUE;
		else
			return FALSE;
	}
	/**
	 * 删除数据
	 * @param $table_name		表名
	 * @param $where			where条件			array('user_id'=>'1')
	 * 							 删除成功，返回真，否则返回假
	 */
	public function delete($table_name,$where=array())
	{
		$this->db->delete($table_name,$where);
		if($this->db->affected_rows() > 0)
			return TRUE;
		else
			return FALSE;
	}
	
	/**
	 * 获取匹配条件的总条数
	 * @param $table_name		表名
	 * @param $where			where条件			array('name'=>'jay')
	 */
	public function get_total_rows($table_name,$where=array())
	{
		if(! empty($where))
		{
			$this->db->where($where);
		}
		$this->db->from($table_name);
		return $this->db->count_all_results();
	}
	/**
	 * 获取表名（带前缀的表名）
	 * @param $table_name	表名（不带前缀）
	 */
	public function table_name($table_name)
	{
		return $this->db->dbprefix($table_name);
	}
	
	/**
	 * query查询
	 * 如果传入第二个参数，则表示使用封装查询，如下：
	 * $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; 
	 * $this->db->query($sql, array(3, 'live', 'Rick'));
	 */
	public function query($sql,$statement=array())
	{
		return $this->db->query($sql,$statement);
	}
}
